package com.guo.boot.study.thread;

/**
 * @Auther Heart Guo
 * @Date 2021/12/23-11:03
 */
/*
    函数式接口：
        任何接口，如果只包含唯一一个抽象方法，那么它就是一个函数式接口；
        例如Runnable接口：
            public interface Runnable{
                public abstract void run();
            }
         对于函数式接口，我们恶意通过lambda表达式来创建该接口的对象

* */
public class Lambda {
    //3、静态内部类
    static class Like2 implements ILike{

        @Override
        public void lambda() {
            System.out.println("I Like Lambda2!");
        }
    }


    public static void main(String[] args) {
        ILike like = new Like();

        like.lambda();

        ILike like2 = new Like2();
        like2.lambda();


        //4、局部内部类
        class Like3 implements ILike{

            @Override
            public void lambda() {
                System.out.println("I Like Lambda3!");
            }
        }
        ILike like3 = new Like3();
        like3.lambda();


        //5、匿名内部类，没有类的名称，必须借助接口或者父类
        like = new ILike() {
            @Override
            public void lambda() {
                System.out.println("I Like Lambda4!");

            }
        };
        like.lambda();


        //6、用lambda简化
        like = ()->{
            System.out.println("I Like Lambda5!");
        };
        like.lambda();
    }
}

//1、定义一个函数式接口
interface ILike{
    void lambda();
}

//2、实现类
class Like implements ILike{

    @Override
    public void lambda() {
        System.out.println("I Like Lambda!");
    }
}
